package server

type Message struct {
	MessageType int 
	Msg string 
}

type messageHub struct {
	messages chan *Message
	closech chan struct{}
}

func NewMessageHub() *messageHub {
	return &messageHub{
		messages: make(chan *Message, 1000),
		closech: make(chan struct{}, 1),
	}
}

func (m *messageHub) Start() {
	go m.doStart()
}

func (m *messageHub) doStart() {
	running := true
	for running {
		select {
		case msg := <- m.messages:
			m.processMessage(msg)
		case <- m.closech:
			running = false
		}
	}
}

func (m * messageHub) InMessage(msg *Message) {
	m.messages <- msg
}

func (m *messageHub) processMessage(msg *Message) {

}

func (m *messageHub) Stop() {
	m.closech <- struct{}{}
}

